//导入读取本地存储和设置本地存储的方法
import { getItem, setItem } from '@/utils/storage.js'
import { LANG, TAGS_VIEW } from '@/constant'
export default {
  namespaced: true,
  state: () => ({
    //控制menu菜单的收缩和展开
    sidebarOpend: true,
    // 国际化 读取本地存储中的LANG值 如果没有默认为zh(中国)
    language: getItem(LANG) || 'zh',
    // tags保存的变量
    tagsViewList: getItem(TAGS_VIEW) || []
  }),
  mutations: {
    triggerSidebarOpend(state,) {
      //调用此方法的时候取反控制菜单栏展开收缩的变量
      state.sidebarOpend = !state.sidebarOpend
    },
    //修改国际化变量 zh为中文 en为英文
    setLanguage(state, lang) {
      //设置本地存储
      setItem(LANG, lang)
      state.language = lang
    },
    /**
     * 添加tags
     */
    addTagsViewList(state, tag) {
      // 处理tags路由是否重复 find方法 返回对应元素 如果没有就返回undefined
      const isFind = state.tagsViewList.find(item => {
        return item.path === tag.path
      })
      //如果不存在 那么就是uddefind 那么就需要push到我们保存tags的变量数组中去
      if (!isFind) {
        state.tagsViewList.push(tag)
        //把存储到的tags变量存储到本地存储中去
        setItem(TAGS_VIEW, state.tagsViewList)
      }
    },
    //为指定的tag 修改title
    changeTagsView(state, { index, tag }) {
      //让tagsViewList指定下标的值 等于我们传递过来的tag
      state.tagsViewList[index] = tag
      //把存储到的tags变量存储到本地存储中去
      setItem(TAGS_VIEW, state.tagsViewList)
    },
    /**
     * //如果payload 为other的话代表删除其他 right代表删除右侧 index代表删除当前
     * @param {*}  {type:'other' ||'right' || 'index'} payload
     */
    removeTagsView(state, payload) {
      if (payload.type === 'index') {
        // 删除当前元素
        state.tagsViewList.splice(payload.index,1)
      } else if (payload.type === 'other') { 
        //删除其他元素只保留自己 
        state.tagsViewList.splice(payload.index+1,state.tagsViewList.length -payload.index+1)  //删除当前index之后的 (右侧)
        state.tagsViewList.splice(0,payload.index) //删除左侧的 
      } else if (payload.type === 'right') {
        state.tagsViewList.splice(payload.index+1,state.tagsViewList.length -payload.index+1)  //删除当前index之后的 (右侧)
      }
      //把存储到的tags变量存储到本地存储中去
      setItem(TAGS_VIEW, state.tagsViewList)
    }
  }
}